package com.yxx.business.entity;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxx.common.annotation.Excel;
import com.yxx.common.core.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.experimental.Accessors;
import lombok.*;

import javax.validation.constraints.NotNull;

/**
 * 项目信息Vo对象 tb_project_info
 *
 * @author yxx
 * @date 2025-08-03
 */
@Schema(description = "项目信息Vo实体")
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Builder
@Data
public class TbProjectInfoVo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @Schema(description = "项目ID")
    private Long projectId;

    @Schema(description = "工程名称")
    @NotNull(message = "工程名称不能为空")
    @Excel(name = "工程名称")
    private String engineeringName;

    @Schema(description = "项目名称")
    @NotNull(message = "项目名称不能为空")
    @Excel(name = "项目名称")
    private String projectName;

    @Schema(description = "项目标段")
    @Excel(name = "项目标段")
    private String projectSection;

    @Schema(description = "建设单位")
    @Excel(name = "建设单位")
    private String constructionUnit;

    @Schema(description = "设计单位")
    @Excel(name = "设计单位")
    private String designUnit;

    @Schema(description = "项目里程")
    @Excel(name = "项目里程")
    private BigDecimal mileage;

    @Schema(description = "起点省份")
    @Excel(name = "起点省份")
    private String startProvince;

    @Schema(description = "终点省份")
    @Excel(name = "终点省份")
    private String endProvince;

    @Schema(description = "建设开始时间")
    private Date constructionStart;

    @Schema(description = "建设结束时间")
    private Date constructionEnd;

    @Schema(description = "排放因子(kgCO2e/km)")
    @Excel(name = "排放因子(kgCO2e/km)")
    private BigDecimal transportFactor;

    @Schema(description = "碳排放量(kgCO2e)")
    @Excel(name = "碳排放量(kgCO2e)")
    private BigDecimal totalEmission;
}
